Summary: ExIntrod_Zan97
Functions: fact if zero s 0 prod p add true false
Constructors: s 0 true false
Variables: X Y
Arities:
ar(fact) = 1
ar(if) = 3
ar(zero) = 1
ar(s) = 1
ar(0) = 0
ar(prod) = 2
ar(p) = 1
ar(add) = 2
ar(true) = 0
ar(false) = 0
Replacement map:
µ(fact)={1}
µ(if)={1}
µ(zero)={1}
µ(s)={1}
µ(0)={}
µ(prod)={1,2}
µ(p)={1}
µ(add)={1,2}
µ(true)={}
µ(false)={}
Rules: (file ExIntrod_Zan97)
fact(X) -> if(zero(X),s(0),prod(X,fact(p(X))))
add(0,X) -> X
add(s(X),Y) -> s(add(X,Y))
prod(0,X) -> 0
prod(s(X),Y) -> add(Y,prod(X,Y))
if(true,X,Y) -> X
if(false,X,Y) -> Y
zero(0) -> true
zero(s(X)) -> false
p(s(X)) -> X
obj ExIntrod_Zan97 is
sort S .
op fact : S -> S .
op if : S S S -> S [strat (1 0)] .
op zero : S -> S .
op s : S -> S .
op 0 : -> S .
op prod : S S -> S .
op p : S -> S .
op add : S S -> S .
op true : -> S .
op false : -> S .
vars X Y : S .
eq fact(X) = if(zero(X),s(0),prod(X,fact(p(X)))) .
eq add(0,X) = X .
eq add(s(X),Y) = s(add(X,Y)) .
eq prod(0,X) = 0 .
eq prod(s(X),Y) = add(Y,prod(X,Y)) .
eq if(true,X,Y) = X .
eq if(false,X,Y) = Y .
eq zero(0) = true .
eq zero(s(X)) = false .
eq p(s(X)) = X .
endo
Negative results
-
The TRS is not simply mu-terminating [GL02b] for any replacement map
greather than or equal to the canonical one, i.e.,
µcan(fact)={}
µcan(if)={1}
µcan(zero)={1}
µcan(s)={}
µcan(0)={}
µcan(prod)={1}
µcan(p)={1}
µcan(true)={}
µcan(false)={}
µcan(add)={1}
The following µ-rewriting sequence in ExIntrod_Zan97 + Embµ(F)
fact(s(0)) \-> if zero(s(0)) then s(0) else s(0)*fact(p(s(0)))
\-> if false then s(0) else s(0)*fact(p(s(0)))
\-> s(0)*fact(p(s(0)))
\-> (0*fact(p(s(0))))+fact(p(s(0)))
\-> 0+fact(p(s(0)))
\-> fact(p(s(0)))
\->_Embµ(F) fact(s(0))
\-> ...
shows that the TRS is not simply µ-terminating. Thus, in particular,
no proof of µ-termination is possible by using CSRPO or polynomial
interpretations.
-
The µ-termination of ExIntrod_Zan97 cannot be proved by using Lucas' transformation.
The TRS ExIntrod_Zan97_L:
fact(X) -> if(zero(X))
add(0,X) -> X
add(s(X),Y) -> s(add(X,Y))
prod(0,X) -> 0
prod(s(X),Y) -> add(Y,prod(X,Y))
if(true) -> X
if(false) -> Y
zero(0) -> true
zero(s(X)) -> false
p(s(X)) -> X
contains extra variables.
Positive results
--